package aceim.app.widgets.pageselector; import java.util.List; import aceim.app.themeable.dataentity.TabThemeResource; import aceim.app.view.page.Page; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import com.androidquery.AQuery; public class PageAdapter extends ArrayAdapter<Page> { private final OnClickListener mOnClickListener; private final TabThemeResource mTabResource; private AQuery mAq; public PageAdapter(Context context, OnClickListener onClickListener, TabThemeResource tabThemeResource, List<Page> pages) { super(context, 0, 0, pages); this.mOnClickListener = onClickListener; this.mTabResource = tabThemeResource; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mTabResource.getView(); if (mOnClickListener != null) { convertView.setOnClickListener(mOnClickListener); } } Page page = getItem(position); convertView.setTag(page); fillWithImageAndTitle(convertView, page); return convertView; } public void fillWithImageAndTitle(View view, Page page) { if (view == null || page != view.getTag()) { return; } if (mAq == null) { mAq = new AQuery(view); } else { mAq.recycle(view); } mAq.id(android.R.id.icon).image(page.getIcon(getContext())); mAq.id(android.R.id.title).text(page.getTitle(getContext())); } }